package co.com.corbeta.logica;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

/**
 * Clase que contiene las utilidades que tienen que ver con archivos
 * 
 * @author Diego A. Galindo
 * @since 1.0 23/07/2014
 * */
public class ArchivosUtilidad {
    /**
     * Metodo que se encarga de crear un archivo en la ubicacion que ingresa por
     * parametro, y con el nombre que entra por parametros
     * 
     * @param ruta
     *            String que contiene la ruta en donde se va a guardar el
     *            archivo
     * @param nombreArchivo
     *            String que contiene el nombre del archivo
     * @param registros
     *            Lista que contiene todos los strings que van a ser escrtos
     * @throws IOException
     *             excepcion que se lanza cuando no se pudo crear el archivo
     * */
    public static void crearArchivo(final String ruta,
	    final String nombreArchivo, final List<String> registros)
	    throws IOException {
	FileWriter archivo = null;
	PrintWriter pw = null;
	try {
	    archivo = new FileWriter(ruta + nombreArchivo);
	    pw = new PrintWriter(archivo);

	    for (String registro : registros) {
		pw.println(registro);
	    }

	} catch (IOException ioe) {
	    throw ioe;

	} finally {
	    try {
		if (null != archivo)
		    archivo.close();
	    } catch (Exception e2) {
		e2.printStackTrace();
	    }
	}
    }

    /**
     * Metodo que se encarga de crear un archivo en la ubicacion que ingresa por
     * parametro, y con el nombre que entra por parametros. En caso de que el
     * archivo exista escribe al final del archivo
     * 
     * @param ruta
     *            String que contiene la ruta en donde se va a guardar el
     *            archivo
     * @param nombreArchivo
     *            String que contiene el nombre del archivo
     * @param registros
     *            Lista que contiene todos los strings que van a ser escrtos
     * @throws IOException
     *             Excepcion generada cuando no se puede crear o abrir el
     *             archivo
     * */
    public static void insertarRegistrosArchivo(final String ruta,
	    final String nombreArchivo, final List<String> registros)
	    throws IOException {
	FileWriter archivo = null;
	PrintWriter pw = null;
	try {
	    archivo = new FileWriter(ruta + nombreArchivo, true);
	    pw = new PrintWriter(archivo);

	    for (String registro : registros) {
		pw.println(registro);
	    }

	} catch (IOException ioe) {
	    throw ioe;
	} finally {
	    try {
		if (null != archivo)
		    archivo.close();
	    } catch (Exception e2) {
		e2.printStackTrace();
	    }
	}
    }

    /**
     * Metodo que se encarga de crear un archivo en la ubicacion que ingresa por
     * parametro, y con el nombre que entra por parametros. En caso de que el
     * archivo exista escribe al final del archivo
     * 
     * @param ruta
     *            String que contiene la ruta en donde se va a guardar el
     *            archivo
     * @param nombreArchivo
     *            String que contiene el nombre del archivo
     * @param registro
     *            Registro que se va a insertar en el archivo
     * @throws IOException
     *             Excepcion generada cuando no se puede crear o abrir el
     *             archivo
     * */
    public static void insertarRegistroArchivo(final String ruta,
	    final String nombreArchivo, final String registro)
	    throws IOException {
	FileWriter archivo = null;
	PrintWriter pw = null;
	try {
	    archivo = new FileWriter(ruta + nombreArchivo, true);
	    pw = new PrintWriter(archivo);
	    pw.println(registro);
	} catch (IOException ioe) {
	    throw ioe;
	} finally {
	    try {
		if (null != archivo)
		    archivo.close();
	    } catch (Exception e2) {
		e2.printStackTrace();
	    }
	}
    }
}
